{
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ksUdu7H7qBig"
      },
      "source": [
        "# 🤖 벡터 검색 에이전트: 허깅페이스 허브를 백엔드로 하는 지능형 검색 엔진\n",
        "\n",
        "_참조: [Martin Elstner](https://github.com/MartinEls)\n",
        "_작성자: [안정](https://github.com/ahnjj)\n",
        "\n",
        "검색 엔진은 크게 키워드 검색과 벡터 검색으로 나눌 수 있습니다.\n",
        "키워드 검색과 달리, 벡터 검색을 사용할 때는 두 가지를 고려해야 합니다.\n",
        "1. 적합한 임베딩 모델로 데이터셋과 쿼리를 임베딩하는 작업\n",
        "2. 임베딩 데이터를 처리할 수 있는 DB\n",
        "\n",
        "하지만 임베딩 값을 기반으로 한 벡터 검색만으로는 ‘사용자가 원하는 답변’을 보장하기 어렵습니다.\n",
        "\n",
        "그래서 검색 과정에서 에이전트가 자율적으로 판단하고 최적화한다면, 사용자 의도에 더 가까운 검색 결과를 얻을 수 있습니다.\n",
        "\n",
        "### Agentic 접근 방식의 차별점\n",
        "기존 벡터 검색 워크플로우\n",
        "```\n",
        "데이터 ➡ 데이터 임베딩(고정 모델) ➡ 인덱스 생성 ➡ 사용자 질의 ➡ 유사도 검색 ➡ 답변\n",
        "```\n",
        "똑똑한 Agentic 방식\n",
        "```\n",
        "사용자 질의 분석(검색 전략 세움) ➡ 최적 임베딩 모델 선택 ➡ 데이터 임베딩 ➡ 인덱스 생성 ➡ 유사도 검색 ➡ 검색결과 바탕으로 답변 정제\n",
        "```\n",
        "\n",
        "### DuckDB?\n",
        "허깅페이스의 데이터셋은 파켓(parquet) 파일을 기반으로 동작하는데, 이때 빠른 인메모리 데이터베이스 시스템인 [DuckDB를 사용하면 이 파일들과 상호작용](https://huggingface.co/docs/hub/en/datasets-duckdb)할 수 있습니다. 또한 DuckDB의 기능 중 하나는 [벡터 유사도 검색](https://duckdb.org/docs/extensions/vss.html)으로, 인덱스 유무에 관계없이 사용할 수 있습니다.\n",
        "\n",
        "\n",
        "이번 노트북에서는 단일 Agent에 여러가지 도구를 주어 수행하는 간단한 Agentic 벡터 검색 엔진을 만들어 보겠습니다."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "필요한 의존성을 설치합니다 :"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "# 본 예제 파일은 Python 3.10 이상 버전에서만 실행할 수 있습니다.\n",
        "!pip install -U smolagents datasets sentence-transformers duckdb openai"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "HuggingFace의 추론 API를 사용하기 위해 로그인합니다 : "
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {},
      "outputs": [],
      "source": [
        "from huggingface_hub import notebook_login\n",
        "\n",
        "notebook_login()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "dtRgDq1aEmsP"
      },
      "outputs": [],
      "source": [
        "from smolagents import tool\n",
        "from datasets import Dataset\n",
        "import os\n",
        "\n",
        "# 도구 사용을 위해 OPENAI 키를 발급 받아야합니다.\n",
        "os.environ[\"OPENAI_API_KEY\"] = \"YOUR KEY\""
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Old2t6dnpi3M"
      },
      "source": [
        "# 도구 정의\n",
        "정의할 도구는 아래와 같습니다.\n",
        "- 임베딩 생성 도구\n",
        "- 인덱스 생성 도구\n",
        "- 유사도 검색 도구\n",
        "- 답변 생성 도구"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "jqkItR-ezMxt"
      },
      "source": [
        "### 도구1 : 임베딩 생성\n",
        "일반적으로, 임베딩 작업에서는 작은 배치 사이즈로 데이터를 청킹하지만 여기서는 단순히 데이터셋을 임베딩으로 변환하는 과정만 수행하겠습니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "7suweNYNIfMi"
      },
      "outputs": [],
      "source": [
        "@tool\n",
        "def create_embeddings(\n",
        "    dataset: Dataset,\n",
        "    model_id: str,\n",
        "    column_name: str,\n",
        "    ) -> Dataset:\n",
        "  \"\"\"\n",
        "    주어진 데이터셋에 대해 임베딩을 생성합니다.\n",
        "\n",
        "    Args:\n",
        "        dataset: 임베딩을 생성할 대상 데이터셋\n",
        "        model_id: 임베딩에 사용할 모델\n",
        "        column_name: 임베딩할 열 이름\n",
        "\n",
        "    Returns:\n",
        "        임베딩이 추가된 데이터셋\n",
        "  \"\"\"\n",
        "  from sentence_transformers import SentenceTransformer\n",
        "\n",
        "  model = SentenceTransformer(model_id)\n",
        "\n",
        "  def embed_batch(batch):\n",
        "    embeddings = model.encode(batch[column_name], convert_to_numpy=True)\n",
        "    batch[\"embeddings\"] = embeddings.tolist()\n",
        "    return batch\n",
        "\n",
        "  dataset = dataset.map(embed_batch, batched=True)\n",
        "\n",
        "  return dataset"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "pFE5laHqqBii"
      },
      "source": [
        "## DuckDB로 벡터 검색 수행하기\n",
        "`duckdb`를 사용하여 데이터셋에서 벡터 검색을 수행할 수 있습니다.\n",
        "인덱스는 사용하거나 사용하지 않을 수 있습니다. 인덱스를 **활용하지 않고** 검색하는 것은 더 느리지만 더 정확하고, 인덱스를 **활용하여** 검색하는 것은 더 빠르지만 덜 정확합니다.\n",
        "\n",
        "### 인덱스를 활용하지 않고 검색하기\n",
        "인덱스를 활용하지 않고 검색하는 것은 느린 작업지만 일반적으로 약 10만 행까지의 작은 데이터셋에서는 충분히 빠르게 동작합니다. 하지만 이번 노트북에서는 DuckDB의 인덱스를 활용해서 검색해보겠습니다."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Y4W1wkkRqBij"
      },
      "source": [
        "### 인덱스를 활용하여 검색하기\n",
        "\n",
        "이 접근법은 데이터셋의 로컬 복사본을 생성하고 이를 사용하여 인덱스를 생성합니다. 약간의 오버헤드가 있지만 한번 인덱스를 생성한 후에는 검색 속도가 개선될 것입니다."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "kS61lIgSAYmS"
      },
      "source": [
        "### 도구2 : DuckDB 인덱스 만들기"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "KymcS1uUd2Lg"
      },
      "outputs": [],
      "source": [
        "@tool\n",
        "def create_db_index(\n",
        "    dataset_with_embeddings: Dataset,  # 임베딩이 포함된 데이터셋\n",
        "    table_name: str,\n",
        "    embedding_column: str = \"embeddings\"\n",
        ") -> None:\n",
        "    \"\"\"\n",
        "    임베딩이 포함된 데이터셋에 대해 DuckDB 인덱스를 생성합니다.\n",
        "\n",
        "    Args:\n",
        "        dataset_with_embeddings: 이미 임베딩이 포함된 데이터셋\n",
        "        table_name: 생성할 테이블 이름\n",
        "        embedding_column: 임베딩 열 이름\n",
        "\n",
        "    Returns:\n",
        "        None\n",
        "    \"\"\"\n",
        "    import duckdb\n",
        "    \n",
        "    # VSS 확장 설치 및 로드\n",
        "    duckdb.sql(\"INSTALL vss; LOAD vss;\")\n",
        "    duckdb.sql(f\"DROP TABLE IF EXISTS {table_name};\")\n",
        "\n",
        "    # 데이터셋을 pandas DataFrame으로 변환\n",
        "    df = dataset_with_embeddings.to_pandas()\n",
        "\n",
        "    # DuckDB에 DataFrame 등록\n",
        "    duckdb.register(f\"{table_name}_temp\", df)\n",
        "\n",
        "    # 모델에서 임베딩 차원 가져오기\n",
        "    embedding_dim = len(df[embedding_column].iloc[0])\n",
        "    # embedding_dim = model.get_sentence_embedding_dimension()\n",
        "\n",
        "    # 테이블 생성 (임베딩을 FLOAT 배열로 변환)\n",
        "    duckdb.sql(f\"\"\"\n",
        "        CREATE TABLE {table_name} AS\n",
        "        SELECT *, {embedding_column}::FLOAT[{embedding_dim}] AS {embedding_column}_float\n",
        "        FROM {table_name}_temp;\n",
        "    \"\"\")\n",
        "\n",
        "    # HNSW 인덱스 생성\n",
        "    duckdb.sql(f\"\"\"\n",
        "        CREATE INDEX idx_{embedding_column} ON {table_name}\n",
        "        USING HNSW ({embedding_column}_float) WITH (metric = 'cosine');\n",
        "    \"\"\")\n",
        "\n",
        "    # 임시 테이블 정리\n",
        "    duckdb.sql(f\"DROP VIEW IF EXISTS {table_name}_temp;\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "rPv0DiO8qBij"
      },
      "source": [
        "이 도구를 통해 인덱스를 사용하여 벡터 검색을 수행할 수 있으며, 결과는 즉시 반환됩니다."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "ygW649Ln0OvV"
      },
      "source": [
        "### 도구3 : 벡터 검색 수행하기"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "ZT0732nmqBij"
      },
      "outputs": [],
      "source": [
        "@tool\n",
        "def similarity_search_with_duckdb_index(\n",
        "    query: str,\n",
        "    table_name: str,\n",
        "    model_id: str,\n",
        "    k: int = 5,\n",
        "    embedding_column: str = \"embeddings\"\n",
        ")-> dict:\n",
        "    \"\"\"\n",
        "    DuckDB 인덱스를 이용해 벡터 검색을 수행합니다.\n",
        "\n",
        "    Args:\n",
        "        query: 검색할 쿼리 문자열\n",
        "        model_id: 임베딩에 사용할 모델\n",
        "        k: 반환할 결과 수\n",
        "        table_name: 검색할 테이블 이름\n",
        "        embedding_column: 임베딩 컬럼 이름\n",
        "\n",
        "    Returns:\n",
        "        dict: 검색 결과\n",
        "    \"\"\"\n",
        "    from sentence_transformers import SentenceTransformer\n",
        "    import duckdb\n",
        "    \n",
        "    model = SentenceTransformer(model_id)\n",
        "    embedding = model.encode(query).tolist()\n",
        "    return duckdb.sql(\n",
        "        query=f\"\"\"\n",
        "        SELECT *, array_cosine_distance({embedding_column}_float, {embedding}::FLOAT[{model.get_sentence_embedding_dimension()}]) as distance\n",
        "        FROM {table_name}\n",
        "        ORDER BY distance\n",
        "        LIMIT {k};\n",
        "    \"\"\"\n",
        "    ).to_df()"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "XVT4VYknqBij"
      },
      "source": [
        "무거운 벡터 검색 엔진을 따로 배포할 필요 없고, 저장소는 허브에서 처리됩니다."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "AQf6IxFGqBij"
      },
      "source": [
        "### 도구4 : 답변 생성 도구\n",
        "유사도 검색 결과 청크를 기반으로, LLM이 사용자가 원할 만한 답변을 생성합니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "qSVSBs0A_xfy"
      },
      "outputs": [],
      "source": [
        "@tool\n",
        "def generate_answer(chunks: list, query: str) -> str:\n",
        "    \"\"\"\n",
        "    쿼리를 기반으로 주어진 텍스트 청크 목록에서 답변을 생성합니다.\n",
        "\n",
        "    Args:\n",
        "        chunks: 답변 생성에 사용할 텍스트 청크 목록\n",
        "        query: 답변할 쿼리 문자열\n",
        "\n",
        "    Returns:\n",
        "        str: 생성된 답변\n",
        "    \"\"\"\n",
        "    import openai   # OPENAI 키 발급이 필요합니다.\n",
        "    \n",
        "    context = \"\\n\\n\".join(chunks)\n",
        "    prompt = f\"Context:\\n{context}\\n\\nQuestion: {query}\\nAnswer:\"\n",
        "    response = openai.ChatCompletion.create(\n",
        "        model=\"gpt-4\",\n",
        "        messages=[{\"role\": \"user\", \"content\": prompt}]\n",
        "    )\n",
        "    return response[\"choices\"][0][\"message\"][\"content\"]"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "Z3k43xYi0vcz"
      },
      "source": [
        "도구를 정의하였으니, 데이터셋을 로드하고 에이전트를 동작해보겠습니다."
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "oCgDoLCqCBG1"
      },
      "source": [
        "사용한 데이터셋은 [huggingface-KREW/KoCultre-Descriptions](https://huggingface.co/datasets/huggingface-KREW/KoCultre-Descriptions)으로, 한국어 밈(meme)에 대한 데이터입니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 113,
          "referenced_widgets": [
            "da22f8b62fe94c6db8a349c86578a34b",
            "092bb432223843e38d69a0bf5eafffda",
            "02a6eab80d80470ca4a9432507d4ab4f",
            "688509c3349a4f4db2c7b3a2bdcb1e08",
            "4fae65a8950d4ac5805905b9262c9a68",
            "16b7816127984131bbee7916e2333810",
            "fc39d4e718434e678c31061dfa25f4b2",
            "8118ca70d2f740cdb9cc1e3f352258cf",
            "3da33d2b5ff84c21850f7ff631e05f94",
            "804b210a10e648b49b4dbb2e2956e0fe",
            "c18da1de6f4c44bda89d7a1133d20fca",
            "c4f1eba98f0d43b0b250e0328605b510",
            "e13c94baf6d045388052e5bfa8dca502",
            "cb52506c52a44c7ca77c103fb5c2493b",
            "a6f32dc6a8a646e0b9c0b7620d2c5194",
            "52ae7aa2a1124f319597974b7630f60d",
            "677fa72bff2549928b34acfbb22a884b",
            "df79f87afec54af5b301232d9dfe85e1",
            "f12ebb6a7d7e4f5aa43acd9b30bdcbb5",
            "20602d81271a4e75a91b7c46fd72bda4",
            "cf1b1d77b7c94d3da0b13248a6e56224",
            "3e6d105b09e14e1c80d949377cf2cc89",
            "e4038023d5ff4e1b815d2ba77001332f",
            "1c893036f65b4489a53173a1627c657d",
            "2f7395a1ff404d47abaf8e6f5c40aa71",
            "d95dc878fa2949bb827a107f92d71663",
            "99ce43aee22247afba86a42d38d9f37b",
            "b4a50e8386504041bfb0d8b5f4c36f64",
            "0ed1c6e37bbb4332bfa2f41e44b34ed4",
            "55ef96f9fa104094932f8cbe4f9e127c",
            "e2941ee4b84a4f0f80f2fbc8a6048f9e",
            "bc80842e06344fe5ac996792a8347c0d",
            "18204cadeed24b14b8dc82f0020dbbdd"
          ]
        },
        "id": "cWjXlIfv_yHo",
        "outputId": "24f7a702-8273-4c50-c38a-7bb1221e4f8f"
      },
      "outputs": [],
      "source": [
        "from datasets import load_dataset\n",
        "\n",
        "dataset = load_dataset(\"huggingface-KREW/KoCultre-Descriptions\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "0QNvC0D0g3Fs"
      },
      "source": [
        "에이전트를 정의합니다. 사용할 모델은 Qwen/Qwen2.5-Coder-32B-Instruct 입니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "knZh-7CThBj8"
      },
      "outputs": [],
      "source": [
        "from smolagents import CodeAgent, InferenceClientModel\n",
        "\n",
        "model = InferenceClientModel(\n",
        "    \"Qwen/Qwen2.5-Coder-32B-Instruct\",\n",
        "    provider=\"together\",\n",
        "    max_tokens=2048\n",
        ")\n",
        "\n",
        "tools = [\n",
        "    create_embeddings,                    # 임베딩 생성 도구\n",
        "    create_db_index,                      # 인덱스 생성 도구\n",
        "    similarity_search_with_duckdb_index,  # 유사도 검색 도구\n",
        "    generate_answer                       # 답변 생성 도구\n",
        "]\n",
        "\n",
        "agent = CodeAgent(\n",
        "    model=model,\n",
        "    tools=tools,\n",
        "    verbosity_level=2,\n",
        "    max_steps=15\n",
        ")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "P6odGxJ5hDq7"
      },
      "source": [
        "에이전트가 자율적으로 임베딩 모델을 택할 수 있도록 프롬프트를 구성하겠습니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "mUkNSrqchND5"
      },
      "outputs": [],
      "source": [
        "def agentic_prompt(query: str):\n",
        "  return f\"\"\"\n",
        "      당신은 지능형 검색 전문가입니다. {query}:\n",
        "\n",
        "      검색을 위해 먼저 쿼리와 데이터셋을 분석하고, 분석 결과에 따라 가장 적합한 임베딩 모델을 선택하세요\n",
        "        - sentence-transformers/all-MiniLM-L6-v2 (fast, lightweight, good for simple queries)\n",
        "        - sentence-transformers/all-mpnet-base-v2 (balanced performance)\n",
        "        - intfloat/e5-large-v2 (high quality for complex tasks)\n",
        "        - minishlab/potion-base-8M (very efficient)\n",
        "      \"\"\""
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "_Zeg68UohTi7"
      },
      "source": [
        "데이터셋에 대한 설명과, 검색어를 입력하고 검색엔진 에이전트를 실행합니다."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 1000
        },
        "id": "ETUbg3spWCCK",
        "outputId": "3e95574b-2e12-42c3-d773-d8693c0900bc"
      },
      "outputs": [],
      "source": [
        "result = agent.run(\n",
        "    agentic_prompt(query=\"아이돌 관련 밈 알려주세요\"),\n",
        "    additional_args={\"dataset\": dataset,\n",
        "                     \"dataset_description\": \"한국어 밈(meme)에 대한 데이터셋으로, meme과(title), meme의 뜻(content)을 알려준다.\",\n",
        "                     \"column_name\": \"content\"}\n",
        ")"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "VB_DTnydANo5",
        "outputId": "72889b8d-3893-436c-f2b0-d349fe1db491"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Final result: 엄마가되는 밈은 최근 SNS와 온라인 커뮤니티에서 유행하는 표현으로, 주로 누군가가 매우 귀엽거나 사랑스러워서 모성애적 감정을 느낄 때 사용됩니다. 이 표현은 아이돌 팬덤 문화에서 자주 사용되며, '엄마가 돼'가 올바른 표기이지만 의도적인 맞춤법 파괴를 통해 밈으로서의 독특한 성격을 갖게 되었습니다.\n"
          ]
        }
      ],
      "source": [
        "print(f\"Final result: {result}\")"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "```\n",
        "Final result: 엄마가되는 밈은 최근 SNS와 온라인 커뮤니티에서 유행하는 표현으로, 주로 누군가가 매우 귀엽거나 사랑스러워서 모성애적 감정을 느낄 때 사용됩니다. 이 표현은 아이돌 팬덤 문화에서 자주 사용되며, '엄마가 돼'가 올바른 표기이지만 의도적인 맞춤법 파괴를 통해 밈으로서의 독특한 성격을 갖게 되었습니다.\n",
        "```"
      ]
    },
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "aWKaTqyoAkXa"
      },
      "source": [
        "### **Conclusion**\n",
        "\n",
        "단순히 검색 결과만을 가져오는 것이 아니라, 검색결과를 바탕으로 쿼리에 따른 답변을 정제해서 보여주었습니다.✌🏻\n",
        "\n",
        "지금까지 간단한 에이전트 시스템을 만들어보았습니다. 여기에 품질 평가, 분석 등을 추가한다면 진정한 Agentic 검색 엔진을 구현할 수 있습니다."
      ]
    }
  ],
  "metadata": {
    "accelerator": "GPU",
    "colab": {
      "gpuType": "T4",
      "machine_shape": "hm",
      "provenance": []
    },
    "kernelspec": {
      "display_name": "Python 3",
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "name": "ipython",
        "version": 3
      },
      "file_extension": ".py",
      "mimetype": "text/x-python",
      "name": "python",
      "nbconvert_exporter": "python",
      "pygments_lexer": "ipython3",
      "version": "3.11.11"
    },
    "widgets": {
      "application/vnd.jupyter.widget-state+json": {
        "02a6eab80d80470ca4a9432507d4ab4f": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_8118ca70d2f740cdb9cc1e3f352258cf",
            "max": 1,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_3da33d2b5ff84c21850f7ff631e05f94",
            "value": 1
          }
        },
        "092bb432223843e38d69a0bf5eafffda": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_16b7816127984131bbee7916e2333810",
            "placeholder": "​",
            "style": "IPY_MODEL_fc39d4e718434e678c31061dfa25f4b2",
            "value": "README.md: "
          }
        },
        "0ed1c6e37bbb4332bfa2f41e44b34ed4": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "16b7816127984131bbee7916e2333810": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "18204cadeed24b14b8dc82f0020dbbdd": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "1c893036f65b4489a53173a1627c657d": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_b4a50e8386504041bfb0d8b5f4c36f64",
            "placeholder": "​",
            "style": "IPY_MODEL_0ed1c6e37bbb4332bfa2f41e44b34ed4",
            "value": "Generating train split: 100%"
          }
        },
        "20602d81271a4e75a91b7c46fd72bda4": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "2f7395a1ff404d47abaf8e6f5c40aa71": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_55ef96f9fa104094932f8cbe4f9e127c",
            "max": 503,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_e2941ee4b84a4f0f80f2fbc8a6048f9e",
            "value": 503
          }
        },
        "3da33d2b5ff84c21850f7ff631e05f94": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "3e6d105b09e14e1c80d949377cf2cc89": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "4fae65a8950d4ac5805905b9262c9a68": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "52ae7aa2a1124f319597974b7630f60d": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "55ef96f9fa104094932f8cbe4f9e127c": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "677fa72bff2549928b34acfbb22a884b": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "688509c3349a4f4db2c7b3a2bdcb1e08": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_804b210a10e648b49b4dbb2e2956e0fe",
            "placeholder": "​",
            "style": "IPY_MODEL_c18da1de6f4c44bda89d7a1133d20fca",
            "value": " 11.3k/? [00:00&lt;00:00, 1.07MB/s]"
          }
        },
        "804b210a10e648b49b4dbb2e2956e0fe": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "8118ca70d2f740cdb9cc1e3f352258cf": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": "20px"
          }
        },
        "99ce43aee22247afba86a42d38d9f37b": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "a6f32dc6a8a646e0b9c0b7620d2c5194": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_cf1b1d77b7c94d3da0b13248a6e56224",
            "placeholder": "​",
            "style": "IPY_MODEL_3e6d105b09e14e1c80d949377cf2cc89",
            "value": " 241k/241k [00:00&lt;00:00, 5.27MB/s]"
          }
        },
        "b4a50e8386504041bfb0d8b5f4c36f64": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "bc80842e06344fe5ac996792a8347c0d": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "c18da1de6f4c44bda89d7a1133d20fca": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "c4f1eba98f0d43b0b250e0328605b510": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_e13c94baf6d045388052e5bfa8dca502",
              "IPY_MODEL_cb52506c52a44c7ca77c103fb5c2493b",
              "IPY_MODEL_a6f32dc6a8a646e0b9c0b7620d2c5194"
            ],
            "layout": "IPY_MODEL_52ae7aa2a1124f319597974b7630f60d"
          }
        },
        "cb52506c52a44c7ca77c103fb5c2493b": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "FloatProgressModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "FloatProgressModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "ProgressView",
            "bar_style": "success",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_f12ebb6a7d7e4f5aa43acd9b30bdcbb5",
            "max": 240548,
            "min": 0,
            "orientation": "horizontal",
            "style": "IPY_MODEL_20602d81271a4e75a91b7c46fd72bda4",
            "value": 240548
          }
        },
        "cf1b1d77b7c94d3da0b13248a6e56224": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "d95dc878fa2949bb827a107f92d71663": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_bc80842e06344fe5ac996792a8347c0d",
            "placeholder": "​",
            "style": "IPY_MODEL_18204cadeed24b14b8dc82f0020dbbdd",
            "value": " 503/503 [00:00&lt;00:00, 10988.77 examples/s]"
          }
        },
        "da22f8b62fe94c6db8a349c86578a34b": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_092bb432223843e38d69a0bf5eafffda",
              "IPY_MODEL_02a6eab80d80470ca4a9432507d4ab4f",
              "IPY_MODEL_688509c3349a4f4db2c7b3a2bdcb1e08"
            ],
            "layout": "IPY_MODEL_4fae65a8950d4ac5805905b9262c9a68"
          }
        },
        "df79f87afec54af5b301232d9dfe85e1": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        },
        "e13c94baf6d045388052e5bfa8dca502": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HTMLModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HTMLModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HTMLView",
            "description": "",
            "description_tooltip": null,
            "layout": "IPY_MODEL_677fa72bff2549928b34acfbb22a884b",
            "placeholder": "​",
            "style": "IPY_MODEL_df79f87afec54af5b301232d9dfe85e1",
            "value": "train-00000-of-00001.parquet: 100%"
          }
        },
        "e2941ee4b84a4f0f80f2fbc8a6048f9e": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "ProgressStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "ProgressStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "bar_color": null,
            "description_width": ""
          }
        },
        "e4038023d5ff4e1b815d2ba77001332f": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "HBoxModel",
          "state": {
            "_dom_classes": [],
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "HBoxModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/controls",
            "_view_module_version": "1.5.0",
            "_view_name": "HBoxView",
            "box_style": "",
            "children": [
              "IPY_MODEL_1c893036f65b4489a53173a1627c657d",
              "IPY_MODEL_2f7395a1ff404d47abaf8e6f5c40aa71",
              "IPY_MODEL_d95dc878fa2949bb827a107f92d71663"
            ],
            "layout": "IPY_MODEL_99ce43aee22247afba86a42d38d9f37b"
          }
        },
        "f12ebb6a7d7e4f5aa43acd9b30bdcbb5": {
          "model_module": "@jupyter-widgets/base",
          "model_module_version": "1.2.0",
          "model_name": "LayoutModel",
          "state": {
            "_model_module": "@jupyter-widgets/base",
            "_model_module_version": "1.2.0",
            "_model_name": "LayoutModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "LayoutView",
            "align_content": null,
            "align_items": null,
            "align_self": null,
            "border": null,
            "bottom": null,
            "display": null,
            "flex": null,
            "flex_flow": null,
            "grid_area": null,
            "grid_auto_columns": null,
            "grid_auto_flow": null,
            "grid_auto_rows": null,
            "grid_column": null,
            "grid_gap": null,
            "grid_row": null,
            "grid_template_areas": null,
            "grid_template_columns": null,
            "grid_template_rows": null,
            "height": null,
            "justify_content": null,
            "justify_items": null,
            "left": null,
            "margin": null,
            "max_height": null,
            "max_width": null,
            "min_height": null,
            "min_width": null,
            "object_fit": null,
            "object_position": null,
            "order": null,
            "overflow": null,
            "overflow_x": null,
            "overflow_y": null,
            "padding": null,
            "right": null,
            "top": null,
            "visibility": null,
            "width": null
          }
        },
        "fc39d4e718434e678c31061dfa25f4b2": {
          "model_module": "@jupyter-widgets/controls",
          "model_module_version": "1.5.0",
          "model_name": "DescriptionStyleModel",
          "state": {
            "_model_module": "@jupyter-widgets/controls",
            "_model_module_version": "1.5.0",
            "_model_name": "DescriptionStyleModel",
            "_view_count": null,
            "_view_module": "@jupyter-widgets/base",
            "_view_module_version": "1.2.0",
            "_view_name": "StyleView",
            "description_width": ""
          }
        }
      }
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}
